import request from '@/config/axios'
import type {Dayjs} from 'dayjs';

/** ERP 生产入库单项信息 */
export interface ProduceInItem {
    id: number; // 入库项编号
    inId?: number; // 入库编号
    warehouseId?: number; // 仓库编号
    productId?: number; // 产品编号
    productUnitId?: number; // 产品单位编号
    productPrice: number; // 产品单价
    count?: number; // 产品数量
    totalPrice: number; // 合计金额，单位：元
    remark: string; // 备注
}

/** ERP 生产入库单信息 */
export interface ProduceIn {
    id: number; // 入库编号
    no?: string; // 入库单号
    bizType: number; // 业务类型
    planId: number; // 关联生产计划单
    inTime?: string | Dayjs; // 入库时间
    totalCount?: number; // 合计数量
    totalPrice?: number; // 合计金额，单位：元
    status?: number; // 状态
    remark: string; // 备注
    fileUrl: string; // 附件 URL
    produceinitems?: ProduceInItem[]
}

// ERP 生产入库单 API
export const ProduceInApi = {
    // 查询ERP 生产入库单分页
    getProduceInPage: async (params: any) => {
        return await request.get({url: `/erp/produce-in/page`, params})
    },

    // 查询ERP 生产入库单详情
    getProduceIn: async (id: number) => {
        return await request.get({url: `/erp/produce-in/get?id=` + id})
    },

    // 新增ERP 生产入库单
    createProduceIn: async (data: ProduceIn) => {
        return await request.post({url: `/erp/produce-in/create`, data})
    },

    // 修改ERP 生产入库单
    updateProduceIn: async (data: ProduceIn) => {
        return await request.put({url: `/erp/produce-in/update`, data})
    },


    // 更新其它入库单的状态
    updateProduceInStatus: async (id: number, status: number) => {
        return await request.put({
            url: `/erp/produce-in/update-status`,
            params: {
                id,
                status
            }
        })
    },

    // 删除ERP 生产入库单
    deleteProduceIn: async (ids: number[]) => {
        return await request.delete({
            url: `/erp/produce-in/delete`,
            params: {
                ids: ids.join(',')
            }
        })
    },

    /** 批量删除ERP 生产入库单 */
    deleteProduceInList: async (ids: number[]) => {
        return await request.delete({url: `/erp/produce-in/delete-list?ids=${ids.join(',')}`})
    },

    // 导出ERP 生产入库单 Excel
    exportProduceIn: async (params) => {
        return await request.download({url: `/erp/produce-in/export-excel`, params})
    },

// ==================== 子表（ERP 生产入库单项） ====================

    // 获得ERP 生产入库单项列表
    getProduceInItemListByInId: async (inId) => {
        return await request.get({url: `/erp/produce-in/produce-in-item/list-by-in-id?inId=` + inId})
    }
}
